Skip to content
字数
1552 字
阅读时间
7 分钟

Mod Organizer2如何额外安装MOD和为什么要用它?

整合包如何额外安装MOD

  • 安装额外的mod之前,要明白三点:

    • 本整合包是高度统一调试的,任何额外新增的mod,特别是功能性、大修性mod都可能与包里其他mod冲突,出现问题。
    • 你要新增什么mod,可以先群里问一下再安装。
    • 你安装额外mod之后出现任何问题,我可能无法提供任何协助,可能你需要自己解决。
    • 但如果你想讨论任何技术性的想法,我和群里其他人都很高兴和你探讨。
  • 安装流程:

    1. 先将你要安装的mod的压缩包下载到MOD文件夹的downloads文件夹里,例如我的是“E:\Game\EFT_Offline\Life_in_Norvinsk\downloads”。

    2. 需要确定这个压缩包里的文件夹第一层是user文件夹或BepInEx文件夹,或如下图两者皆有,user文件夹代表的是服务器mod,BepInEx是客户端mod,很多mod都是两者皆有:

    3. mod压缩包放进downloads文件夹后,你在MO2界面的右侧栏“下载”中就能看到这个mod:

    4. 右键它或者双击均可进行安装,为了方便管理,建议在安装后将它拖动到相应分类中,并像我这样修改一个好认的名字和备注信息:

    5. 最后一步是对MOD进行排序操作,以便让新mod更好融入整合包:

      1. SPT3的服务器mod加载排序是通过一个order.json里的硬编码确定的,本整合包该文件位置如图所示,编辑请用代码编辑器,不要用TXT(客户端mod和SPT4之后所有mod均不再能自由控制排序):
      2. 这里只简单概述一个排序逻辑:商人——>不修改游戏机制物品(武器、吃喝等)——>涉及游戏机制的物品——>游戏机制修改MOD——>被强调一定要在最后的MOD,其他更细致排序规则就要因mod而异,具体分析,不在此阐述。

为什么用MO2管理整合包的简单总结

  • MO2是通过虚拟链接(沙盒)的方式将MOD的文件和游戏本体文件结合的。
  • MO2将Mod和游戏本体物理分离,对MOD和游戏本体里所有文件的改动都不会破坏本体。
  • MO2可以通过“优先级”机制,通过新建文件并覆盖的方式来对整个整合包里的MOD文件、本体文件进行修改、调试而不会破坏原文件。
  • MO2可以暂时停用MOD来进行排错检查。
  • MO2可以轻松备份、恢复MOD和原文件。

详细

Mod Organizer 2(MO2)的核心实现原理围绕虚拟化文件系统分层管理模组展开,其设计目标是为用户提供非侵入式、灵活的模组管理方案。以下是其关键技术原理的详细分析:


1. 虚拟文件系统(Virtual File System, VFS)

  • 原理
    MO2通过拦截系统文件访问请求(如游戏读取资源时),将原本指向游戏目录的路径动态重定向到用户指定的模组目录。这一过程通过用户态API Hooking实现(如使用开源库USVFS)。

  • 技术细节

    • Hook系统API:例如CreateFileReadFile等函数,在游戏尝试访问文件时,MO2会优先检查模组目录是否存在同名文件。

    • 路径重定向:通过虚拟映射表(如优先级排序的模组列表),将请求路径指向最高优先级模组中的文件,若不存在则回退到游戏原始目录。

  • 优势

    • 游戏本体和模组文件物理隔离,避免污染游戏目录。

    • 无需复制或覆盖文件,节省磁盘空间并提升管理效率。


2. 分层模组管理(Layered Mods)

  • 优先级系统

    • 每个模组独立存储于单独文件夹,用户通过调整优先级决定加载顺序。

    • 高优先级模组的文件会覆盖低优先级的同名文件,但所有文件仅在虚拟层合并,物理上保持独立。

  • 实现方式

    • MO2维护一个模组列表,生成虚拟文件系统视图时,按优先级从高到低合并模组目录。

    • 通过类似“覆盖(Overlay)”的文件系统机制动态合成最终的游戏资源树。


3. 配置文件与存档分离

  • 用户数据重定向

    • 游戏的配置文件(如ini文件)和存档通常存储在系统目录(如我的文档),MO2通过修改注册表或启动参数,将其重定向到MO2实例的独立目录。
  • 多配置支持

    • 用户可创建多个配置文件,每个配置可包含不同的模组组合、游戏设置和存档,实现“一键切换”不同模组环境。

4. 依赖与冲突管理

  • 依赖解析

    • 通过读取模组元数据(如meta.ini)或整合工具(如LOOT),自动检测模组依赖关系。
  • 冲突检测

    • 文件级冲突:可视化显示哪些模组提供了相同文件,用户需手动调整优先级。

    • 插件级冲突:针对ESP/ESM插件,使用工具(如xEdit)检测记录冲突。

贡献者

The avatar of contributor named as SamuelNOTCuriousMeow SamuelNOTCuriousMeow

文件历史

撰写